﻿Imports Domain.Entidades
Imports Newtonsoft.Json

''' <summary>
''' Esta clase se utiliza para dar un soporte generico a la busqueda básica (plana) de cualquier entidad del sistema.
''' Reemplazaría al viejo y querido frmBuscar03 y brindaría soporte a distintas necesidades que se le pueden presentar 
''' al usuario... ejemplo... va a ser posible asociar un determinado registro de la entidad a una etiqueta particular. 
''' </summary>
''' <remarks></remarks>

Public Class frmBandejaPrincipal

    Private mEntidad As String 'Variable publica que se va a utilizar para saber contra que entidad trabajar. 
    'o pIdEntidad... todo va a depender de si los atributos se vana configurar en una tabla de la base de datos 
    'o desde la misma configuracion de la clase. 
    Private mWS As String 'Variable de estado que a traves de sus respectivas propiedades va a determinar 
    'cual es el servicio web que se va a consumir para obtener la informacion 
    'para cargar el formulario. 

    Public Property Entidad() As String
        Get
            Return mEntidad
        End Get
        Set(ByVal value As String)
            'TODO 
            'Definir que validaciones se tienen que hacer en este caso de pasaje de parametros. 
            mEntidad = value
        End Set
    End Property

    Public Property WebService() As String
        Get
            Return mWS
        End Get
        Set(ByVal value As String)
            'TODO 
            'Definir que validaciones se tienen que hacer en este caso de pasaje de parametros. 
            mWS = value
        End Set
    End Property

    'De cualquiera de las dos formas solo necesitariamos este parametro... el resto de la info que se necesite.. 
    'estaría en dicha configuracion. 


    'Trabajar con el repositorio de la forma en que se trabajo las entidadesDb del proyecto fathernet.... en realidad 
    'parecen querer representar lo mismo... no entiendo porque no vi ejemplos donde se implemente el concepto de herencia
    'en la capa repositorio... y si por el contrario Generic y duplicacion de codigo. 
    'TODO... Estudiar si esto es por algun motivo en particular. 

    Private Sub frmBandejaPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ''TODO... poner snipper mientras se trata de consumor el servicio web. 
        ''Esto solo si se puede llevar este codigo al activate del formulario. 
        Dim ws As New wsBuscadorGeneral.wsBuscadorGeneral
        Dim exito As Boolean
        ''Dim lista As IList
        ''TODO... definir interfaces...
        'Dim listaEstados As New List(Of Domain.Entidades.Estado)
        'Dim listaEntidades As New List(Of T)
        'Dim listaEnlaces As IList

        ''Instancio el servicio web Buscador Gral.
        Me.Entidad = "Domain.Entidades.People, Domain"
        Dim strListObj, strListObjEstados, strListObjEtiquetas, strListObjEnlaces As String
        exito = ws.Busqueda(Me.Entidad, strListObj, strListObjEstados, strListObjEtiquetas, strListObjEnlaces)

        'Hago la carga de los estados. 
        If Trim(strListObjEstados) <> "" Then
            Dim listaEstados As List(Of Domain.Entidades.Estado)
            listaEstados = JsonConvert.DeserializeObject(Of List(Of Domain.Entidades.Estado))(strListObjEstados)
            For Each vEstado As Domain.Entidades.Estado In listaEstados
                lstWorkFlow.Items.Add(vEstado.Nombre)
            Next
            'Cargar combo de estados.-
            For Each vEstado As Domain.Entidades.Estado In listaEstados
                'cboMoverA.Items.Add()

                'lstWorkFlow.Items.Add(vEstado.Nombre)
            Next
        End If
        
        'Cargo las entidades recuperadas. 
        Dim listaObj As IList
        listaObj = JsonConvert.DeserializeObject(Of List(Of Domain.Entidades.People))(strListObj)
        'JS.Controles.CargarListView(Me.lsvDetalle, listaObj)
        Dim Item As ListViewItem
        For Each vObj As Domain.Entidades.People In listaObj
            Item = Me.lsvDetalle.Items.Add("", vObj.Id)
            Item.SubItems(0).Text = vObj.Name
        Next

    End Sub

End Class
